package de.hska.gp.adventure.labyrinthos4d.intends;

import de.hska.gp.adventure.labyrinthos4d.Labyrinthos4DMain;
import de.hska.gp.adventure.labyrinthos4d.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Raum Klasse zum generieren der Activities für die Räume 1 bis 16
 * 
 * @author Oliver Eichner
 * @version 0.1
 */
public class RaumN extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.raum_n);

		TextView text = (TextView) findViewById(R.id.textViewRaumN);
		if (Labyrinthos4DMain.gameBeginn) { //Spielbeginn, erster Raum, kein möglichkeit zurück zu gehen.
			text.setText("Du befindest Dich in Raum "
					+ Labyrinthos4DMain.raumomat.getRaum()
					+ " des Labyrinths. "
					+ "Vor dir gibt es vier kreisförmige Öffnungen, bezeichnet mit jeweils einer Zahl 1, 2, 3, 4 über dem Durchgang. "
					+ "Die vier Öffnungen scheinen in Gänge zu führen, die alle im rechten Winkel zueinander stehen. "
					+ "Durch welche Öffnung willst Du weitergehen?");
			Labyrinthos4DMain.gameBeginn = false;
		} else if (!Labyrinthos4DMain.gameBeginn
				&& Labyrinthos4DMain.raumomat.getRaum() == 16) { //Raum 16, ein Ausgang mehr
			text.setText("Du befindest Dich in Raum "
					+ Labyrinthos4DMain.raumomat.getRaum()
					+ " des Labyrinths. "
					+ "Vor dir gibt es drei kreisförmige Öffnungen, bezeichnet mit jeweils einer Zahl "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[0]
					+ ", "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[1]
					+ ", "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[2]
					+ " über dem Durchgang. Hinter Dir ist "
					+ "ebenfalls eine Öffnung, bezeichnet mit "
					+ Labyrinthos4DMain.orientierung.getRichtung()
					+ ". Die drei Öffnungen scheinen in Gänge zu "
					+ "führen, die alle im rechten Winkel zueinander stehen. Über Dir ist ein kreisförmiger Ausgang zu sehen, "
					+ "vor dem ein Energievorhang wabert, Durch den halbtransparenten Vorhang kannst Du eine Landschaft erkennen. "
					+ "Durch welche Öffnung willst Du weitergehen?");
		} else { // Die restlichen Räume.
			text.setText("Du befindest Dich in Raum "
					+ Labyrinthos4DMain.raumomat.getRaum()
					+ " des Labyrinths. "
					+ "Vor dir gibt es drei kreisförmige Öffnungen, bezeichnet mit jeweils einer Zahl "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[0]
					+ ", "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[1]
					+ ", "
					+ Labyrinthos4DMain.orientierung.getNeueRichtungen()[2]
					+ " über dem Durchgang. Hinter Dir ist "
					+ "ebenfalls eine Öffnung, bezeichnet mit "
					+ Labyrinthos4DMain.orientierung.getRichtung()
					+ ". Die drei Öffnungen scheinen in Gänge zu "
					+ "führen, die alle im rechten Winkel zueinander stehen. Durch welche Öffnung willst Du weitergehen?");

		}
		Button button1 = (Button) findViewById(R.id.RNbutton1);
		button1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				changeRoom(1);
			}
		});

		Button button2 = (Button) findViewById(R.id.RNbutton2);
		button2.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				changeRoom(2);
			}
		});

		Button button3 = (Button) findViewById(R.id.RNbutton3);
		button3.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				changeRoom(3);
			}
		});

		Button button4 = (Button) findViewById(R.id.RNbutton4);
		button4.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				changeRoom(4);
			}
		});

		Button button5 = (Button) findViewById(R.id.RNbutton5);
		if (Labyrinthos4DMain.raumomat.getRaum() == 16) {
			button5.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					Labyrinthos4DMain.spielzuege++;
					Labyrinthos4DMain.raumomat
							.laufeRichtung(Labyrinthos4DMain.orientierung
									.setRichtung(4));
					Intent i = new Intent(RaumN.this, Freibier.class);
					startActivity(i);
					finish();
				}
			});
		} else {
			button5.setVisibility(Button.GONE);
		}

	}

	/**
	 * Raum Wechseln und Activity neu laden
	 * 
	 * @arg richtung Die Richtung in die der Spieler Läuft
	 */
	private void changeRoom(int richtung) {
		Labyrinthos4DMain.spielzuege++;
		Labyrinthos4DMain.raumomat.laufeRichtung(Labyrinthos4DMain.orientierung
				.setRichtung(richtung));
		onCreate(null);
	}

	/**
	 * Dialog um den Fluchtversuch des Spielers zu kommentieren
	 */
	private void fluchtDialog() {
		AlertDialog.Builder nDia = new AlertDialog.Builder(this);
		nDia.setMessage(
				"Auch noch flüchten wollen, so nicht! Du bist in diesem Labyrinth gefangen. Da musst du jetzt durch, ist auch nicht weit bis zum Ausgang. xD")
				.setCancelable(true)
				.setNeutralButton(this.getString(R.string.close),
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								dialog.dismiss();
							}
						});

		AlertDialog fluchtDialog = nDia.create();
		fluchtDialog.setTitle("Na, na, na, Abhauen gilt nicht!");
		fluchtDialog.show();
	}

	@Override
	public void onBackPressed() {
		// Wenn Spieler versucht zurück zu gehen und er erst in Raum 1 ist,
		// fluchtDialog Anzeigen.
		if (Labyrinthos4DMain.orientierung.getRichtung() == 0) {
			fluchtDialog();
		} else { // In den Raum zurückkehren aus dem der SPieler kam.
			Toast infoToast = Toast.makeText(this, "Zurück zu Raum "
					+ Labyrinthos4DMain.raumomat.getRaum(), Toast.LENGTH_SHORT);
			infoToast.show();
			changeRoom(Labyrinthos4DMain.orientierung.getRichtung());
		}
		return;
	}
}
